package org.huawei260.TiKu.ODsuanfa;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class E_2024E_3755__BFSBOSS的收入 {

//	public class Main {
		// income: 记录每个代理商赚的钱, key是代理商号, val是代理商赚的钱
		static HashMap<String, Long> income = new HashMap<>();
		// agents: 记录所有的代理商号
		static ArrayList<String> agents = new ArrayList<>();
		// ch_fa: key是子级代理商号, val是父级代理商号
		static HashMap<String, String> ch_fa = new HashMap<>();
		// fa_ch: key是父级代理上号, val是key的所有子级代理商号
		static HashMap<String, ArrayList<String>> fa_ch = new HashMap<>();

		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);

			int n = sc.nextInt();

			for (int i = 0; i < n; i++) {
				// 子级代理商号
				String ch_id = sc.next();
				// 父级代理商号
				String fa_id = sc.next();
				// 子级代理商号赚的钱
				long ch_income = sc.nextLong();

				income.put(ch_id, ch_income);

				agents.add(ch_id);
				agents.add(fa_id);

				ch_fa.put(ch_id, fa_id);

				fa_ch.putIfAbsent(fa_id, new ArrayList<>());
				fa_ch.putIfAbsent(ch_id, new ArrayList<>());
				fa_ch.get(fa_id).add(ch_id);
			}

			System.out.println(getResult());
		}

		public static String getResult() {
			for (String agent : agents) {
				// 顶级代理商号（根）没有父级
				if (!ch_fa.containsKey(agent)) {
					// 设置顶级代理商号 初始金额 为0
					income.put(agent, 0L);
					// 开始深搜
					dfs(agent);
					return agent + " " + income.get(agent);
				}
			}

			return "";
		}

		public static void dfs(String fa_id) {
			// 父级代理商号的所有子级代理商号chs
			ArrayList<String> chs = fa_ch.get(fa_id);

			// 如果存在子级代理商, 则父级代理商从每一个子级代理商赚的钱中：每100元抽15元
			if (chs.size() > 0) {
				for (String ch_id : chs) {
					dfs(ch_id);
					income.put(fa_id, income.get(fa_id) + income.get(ch_id) / 100 * 15);
				}
			}
		}
	}